﻿using System;
using System.ComponentModel;
using System.Management;
using System.Collections;
using System.Globalization;

namespace Microsoft.IIs
{
    public class IIsWebService : Component
    {
        static string CreatedWmiNamespace = "root\\MicrosoftIISv2";
        static string CreatedClassName = "IIsWebService";
        static ManagementScope statMgmtScope = null;
        ManagementSystemProperties PrivateSystemProperties;
        ManagementObject PrivateLateBoundObject;
        bool AutoCommitProp;
        ManagementBaseObject embeddedObj;
        ManagementBaseObject curObj;
        bool isEmbedded;
        public IIsWebService()
        {
            this.InitializeObject(null, null, null);
        }

        public IIsWebService(string keyName)
        {
            this.InitializeObject(null, new ManagementPath(IIsWebService.ConstructPath(keyName)), null);
        }

        public IIsWebService(ManagementScope mgmtScope, string keyName)
        {
            this.InitializeObject(((ManagementScope)(mgmtScope)), new ManagementPath(IIsWebService.ConstructPath(keyName)), null);
        }

        public IIsWebService(ManagementPath path, ObjectGetOptions getOptions)
        {
            this.InitializeObject(null, path, getOptions);
        }

        public IIsWebService(ManagementScope mgmtScope, ManagementPath path)
        {
            this.InitializeObject(mgmtScope, path, null);
        }

        public IIsWebService(ManagementPath path)
        {
            this.InitializeObject(null, path, null);
        }

        public IIsWebService(ManagementScope mgmtScope, ManagementPath path, ObjectGetOptions getOptions)
        {
            this.InitializeObject(mgmtScope, path, getOptions);
        }

        public IIsWebService(ManagementObject theObject)
        {
            Initialize();
            if ((CheckIfProperClass(theObject) == true))
            {
                PrivateLateBoundObject = theObject;
                PrivateSystemProperties = new ManagementSystemProperties(PrivateLateBoundObject);
                curObj = PrivateLateBoundObject;
            }
            else
            {
                throw new ArgumentException("Class name does not match.");
            }
        }

        public IIsWebService(ManagementBaseObject theObject)
        {
            Initialize();
            if ((CheckIfProperClass(theObject) == true))
            {
                embeddedObj = theObject;
                PrivateSystemProperties = new ManagementSystemProperties(theObject);
                curObj = embeddedObj;
                isEmbedded = true;
            }
            else
            {
                throw new ArgumentException("Class name does not match.");
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string OriginatingNamespace
        {
            get
            {
                return "root\\MicrosoftIISv2";
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string ManagementClassName
        {
            get
            {
                string strRet = CreatedClassName;
                if ((curObj != null))
                {
                    if ((curObj.ClassPath != null))
                    {
                        strRet = ((string)(curObj["__CLASS"]));
                        if (((strRet == null)
                                    || (strRet == string.Empty)))
                        {
                            strRet = CreatedClassName;
                        }
                    }
                }
                return strRet;
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public ManagementSystemProperties SystemProperties
        {
            get
            {
                return PrivateSystemProperties;
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public ManagementBaseObject LateBoundObject
        {
            get
            {
                return curObj;
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public ManagementScope Scope
        {
            get
            {
                if ((isEmbedded == false))
                {
                    return PrivateLateBoundObject.Scope;
                }
                else
                {
                    return null;
                }
            }
            set
            {
                if ((isEmbedded == false))
                {
                    PrivateLateBoundObject.Scope = value;
                }
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool AutoCommit
        {
            get
            {
                return AutoCommitProp;
            }
            set
            {
                AutoCommitProp = value;
            }
        }

        [Browsable(true)]
        public ManagementPath Path
        {
            get
            {
                if ((isEmbedded == false))
                {
                    return PrivateLateBoundObject.Path;
                }
                else
                {
                    return null;
                }
            }
            set
            {
                if ((isEmbedded == false))
                {
                    if ((CheckIfProperClass(null, value, null) != true))
                    {
                        throw new ArgumentException("Class name does not match.");
                    }
                    PrivateLateBoundObject.Path = value;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public static ManagementScope StaticScope
        {
            get
            {
                return statMgmtScope;
            }
            set
            {
                statMgmtScope = value;
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsAcceptPauseNull
        {
            get
            {
                if ((curObj["AcceptPause"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public bool AcceptPause
        {
            get
            {
                if ((curObj["AcceptPause"] == null))
                {
                    return Convert.ToBoolean(0);
                }
                return ((bool)(curObj["AcceptPause"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsAcceptStopNull
        {
            get
            {
                if ((curObj["AcceptStop"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public bool AcceptStop
        {
            get
            {
                if ((curObj["AcceptStop"] == null))
                {
                    return Convert.ToBoolean(0);
                }
                return ((bool)(curObj["AcceptStop"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsAppIsolatedNull
        {
            get
            {
                if ((curObj["AppIsolated"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public int AppIsolated
        {
            get
            {
                if ((curObj["AppIsolated"] == null))
                {
                    return Convert.ToInt32(0);
                }
                return ((int)(curObj["AppIsolated"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string AppPackageID
        {
            get
            {
                return ((string)(curObj["AppPackageID"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string AppPackageName
        {
            get
            {
                return ((string)(curObj["AppPackageName"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string AppRoot
        {
            get
            {
                return ((string)(curObj["AppRoot"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string Caption
        {
            get
            {
                return ((string)(curObj["Caption"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsCheckPointNull
        {
            get
            {
                if ((curObj["CheckPoint"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public uint CheckPoint
        {
            get
            {
                if ((curObj["CheckPoint"] == null))
                {
                    return Convert.ToUInt32(0);
                }
                return ((uint)(curObj["CheckPoint"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string CreationClassName
        {
            get
            {
                return ((string)(curObj["CreationClassName"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string Description
        {
            get
            {
                return ((string)(curObj["Description"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsDesktopInteractNull
        {
            get
            {
                if ((curObj["DesktopInteract"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public bool DesktopInteract
        {
            get
            {
                if ((curObj["DesktopInteract"] == null))
                {
                    return Convert.ToBoolean(0);
                }
                return ((bool)(curObj["DesktopInteract"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string DisplayName
        {
            get
            {
                return ((string)(curObj["DisplayName"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string ErrorControl
        {
            get
            {
                return ((string)(curObj["ErrorControl"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsExitCodeNull
        {
            get
            {
                if ((curObj["ExitCode"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public uint ExitCode
        {
            get
            {
                if ((curObj["ExitCode"] == null))
                {
                    return Convert.ToUInt32(0);
                }
                return ((uint)(curObj["ExitCode"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsInstallDateNull
        {
            get
            {
                if ((curObj["InstallDate"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public DateTime InstallDate
        {
            get
            {
                if ((curObj["InstallDate"] != null))
                {
                    return ToDateTime(((string)(curObj["InstallDate"])));
                }
                else
                {
                    return DateTime.MinValue;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string Name
        {
            get
            {
                return ((string)(curObj["Name"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string PathName
        {
            get
            {
                return ((string)(curObj["PathName"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsProcessIdNull
        {
            get
            {
                if ((curObj["ProcessId"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public uint ProcessId
        {
            get
            {
                if ((curObj["ProcessId"] == null))
                {
                    return Convert.ToUInt32(0);
                }
                return ((uint)(curObj["ProcessId"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsServiceSpecificExitCodeNull
        {
            get
            {
                if ((curObj["ServiceSpecificExitCode"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public uint ServiceSpecificExitCode
        {
            get
            {
                if ((curObj["ServiceSpecificExitCode"] == null))
                {
                    return Convert.ToUInt32(0);
                }
                return ((uint)(curObj["ServiceSpecificExitCode"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string ServiceType
        {
            get
            {
                return ((string)(curObj["ServiceType"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public byte[] SSLCertHash
        {
            get
            {
                return ((byte[])(curObj["SSLCertHash"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsStartedNull
        {
            get
            {
                if ((curObj["Started"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public bool Started
        {
            get
            {
                if ((curObj["Started"] == null))
                {
                    return Convert.ToBoolean(0);
                }
                return ((bool)(curObj["Started"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string StartMode
        {
            get
            {
                return ((string)(curObj["StartMode"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string StartName
        {
            get
            {
                return ((string)(curObj["StartName"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string State
        {
            get
            {
                return ((string)(curObj["State"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string Status
        {
            get
            {
                return ((string)(curObj["Status"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string SystemCreationClassName
        {
            get
            {
                return ((string)(curObj["SystemCreationClassName"]));
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public string SystemName
        {
            get
            {
                return ((string)(curObj["SystemName"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsTagIdNull
        {
            get
            {
                if ((curObj["TagId"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public uint TagId
        {
            get
            {
                if ((curObj["TagId"] == null))
                {
                    return Convert.ToUInt32(0);
                }
                return ((uint)(curObj["TagId"]));
            }
        }

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsWaitHintNull
        {
            get
            {
                if ((curObj["WaitHint"] == null))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }

        [Browsable(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [TypeConverter(typeof(WMIValueTypeConverter))]
        public uint WaitHint
        {
            get
            {
                if ((curObj["WaitHint"] == null))
                {
                    return Convert.ToUInt32(0);
                }
                return ((uint)(curObj["WaitHint"]));
            }
        }

        bool CheckIfProperClass(ManagementScope mgmtScope, ManagementPath path, ObjectGetOptions OptionsParam)
        {
            if (((path != null)
                        && (string.Compare(path.ClassName, this.ManagementClassName, true, CultureInfo.InvariantCulture) == 0)))
            {
                return true;
            }
            else
            {
                return CheckIfProperClass(new ManagementObject(mgmtScope, path, OptionsParam));
            }
        }

        bool CheckIfProperClass(ManagementBaseObject theObj)
        {
            if (((theObj != null)
                        && (string.Compare(((string)(theObj["__CLASS"])), this.ManagementClassName, true, CultureInfo.InvariantCulture) == 0)))
            {
                return true;
            }
            else
            {
                Array parentClasses = ((Array)(theObj["__DERIVATION"]));
                if ((parentClasses != null))
                {
                    int count = 0;
                    for (count = 0; (count < parentClasses.Length); count = (count + 1))
                    {
                        if ((string.Compare(((string)(parentClasses.GetValue(count))), this.ManagementClassName, true, CultureInfo.InvariantCulture) == 0))
                        {
                            return true;
                        }
                    }
                }
            }
            return false;
        }

        bool ShouldSerializeAcceptPause()
        {
            if ((this.IsAcceptPauseNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeAcceptStop()
        {
            if ((this.IsAcceptStopNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeAppIsolated()
        {
            if ((this.IsAppIsolatedNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeCheckPoint()
        {
            if ((this.IsCheckPointNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeDesktopInteract()
        {
            if ((this.IsDesktopInteractNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeExitCode()
        {
            if ((this.IsExitCodeNull == false))
            {
                return true;
            }
            return false;
        }

        static DateTime ToDateTime(string dmtfDate)
        {
            DateTime initializer = DateTime.MinValue;
            int year = initializer.Year;
            int month = initializer.Month;
            int day = initializer.Day;
            int hour = initializer.Hour;
            int minute = initializer.Minute;
            int second = initializer.Second;
            long ticks = 0;
            string dmtf = dmtfDate;
            DateTime datetime = DateTime.MinValue;
            string tempString = string.Empty;
            if ((dmtf == null))
            {
                throw new ArgumentOutOfRangeException();
            }
            if ((dmtf.Length == 0))
            {
                throw new ArgumentOutOfRangeException();
            }
            if ((dmtf.Length != 25))
            {
                throw new ArgumentOutOfRangeException();
            }
            try
            {
                tempString = dmtf.Substring(0, 4);
                if (("****" != tempString))
                {
                    year = int.Parse(tempString);
                }
                tempString = dmtf.Substring(4, 2);
                if (("**" != tempString))
                {
                    month = int.Parse(tempString);
                }
                tempString = dmtf.Substring(6, 2);
                if (("**" != tempString))
                {
                    day = int.Parse(tempString);
                }
                tempString = dmtf.Substring(8, 2);
                if (("**" != tempString))
                {
                    hour = int.Parse(tempString);
                }
                tempString = dmtf.Substring(10, 2);
                if (("**" != tempString))
                {
                    minute = int.Parse(tempString);
                }
                tempString = dmtf.Substring(12, 2);
                if (("**" != tempString))
                {
                    second = int.Parse(tempString);
                }
                tempString = dmtf.Substring(15, 6);
                if (("******" != tempString))
                {
                    ticks = (long.Parse(tempString) * ((long)((TimeSpan.TicksPerMillisecond / 1000))));
                }
                if (((((((((year < 0)
                            || (month < 0))
                            || (day < 0))
                            || (hour < 0))
                            || (minute < 0))
                            || (minute < 0))
                            || (second < 0))
                            || (ticks < 0)))
                {
                    throw new ArgumentOutOfRangeException();
                }
            }
            catch (Exception e)
            {
                throw new ArgumentOutOfRangeException(null, e.Message);
            }
            datetime = new DateTime(year, month, day, hour, minute, second, 0);
            datetime = datetime.AddTicks(ticks);
            TimeSpan tickOffset = TimeZone.CurrentTimeZone.GetUtcOffset(datetime);
            int UTCOffset = 0;
            int OffsetToBeAdjusted = 0;
            long OffsetMins = ((long)((tickOffset.Ticks / TimeSpan.TicksPerMinute)));
            tempString = dmtf.Substring(22, 3);
            if ((tempString != "******"))
            {
                tempString = dmtf.Substring(21, 4);
                try
                {
                    UTCOffset = int.Parse(tempString);
                }
                catch (Exception e)
                {
                    throw new ArgumentOutOfRangeException(null, e.Message);
                }
                OffsetToBeAdjusted = ((int)((OffsetMins - UTCOffset)));
                datetime = datetime.AddMinutes(((double)(OffsetToBeAdjusted)));
            }
            return datetime;
        }


        static string ToDmtfDateTime(DateTime date)
        {
            string utcString = string.Empty;
            TimeSpan tickOffset = TimeZone.CurrentTimeZone.GetUtcOffset(date);
            long OffsetMins = ((long)((tickOffset.Ticks / TimeSpan.TicksPerMinute)));
            if ((Math.Abs(OffsetMins) > 999))
            {
                date = date.ToUniversalTime();
                utcString = "+000";
            }
            else
            {
                if ((tickOffset.Ticks >= 0))
                {
                    utcString = string.Concat("+", ((Int64)((tickOffset.Ticks / TimeSpan.TicksPerMinute))).ToString().PadLeft(3, '0'));
                }
                else
                {
                    string strTemp = ((Int64)(OffsetMins)).ToString();
                    utcString = string.Concat("-", strTemp.Substring(1, (strTemp.Length - 1)).PadLeft(3, '0'));
                }
            }
            string dmtfDateTime = ((Int32)(date.Year)).ToString().PadLeft(4, '0');
            dmtfDateTime = string.Concat(dmtfDateTime, ((Int32)(date.Month)).ToString().PadLeft(2, '0'));
            dmtfDateTime = string.Concat(dmtfDateTime, ((Int32)(date.Day)).ToString().PadLeft(2, '0'));
            dmtfDateTime = string.Concat(dmtfDateTime, ((Int32)(date.Hour)).ToString().PadLeft(2, '0'));
            dmtfDateTime = string.Concat(dmtfDateTime, ((Int32)(date.Minute)).ToString().PadLeft(2, '0'));
            dmtfDateTime = string.Concat(dmtfDateTime, ((Int32)(date.Second)).ToString().PadLeft(2, '0'));
            dmtfDateTime = string.Concat(dmtfDateTime, ".");
            DateTime dtTemp = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second, 0);
            long microsec = ((long)((((date.Ticks - dtTemp.Ticks)
                        * 1000)
                        / TimeSpan.TicksPerMillisecond)));
            string strMicrosec = ((Int64)(microsec)).ToString();
            if ((strMicrosec.Length > 6))
            {
                strMicrosec = strMicrosec.Substring(0, 6);
            }
            dmtfDateTime = string.Concat(dmtfDateTime, strMicrosec.PadLeft(6, '0'));
            dmtfDateTime = string.Concat(dmtfDateTime, utcString);
            return dmtfDateTime;
        }

        bool ShouldSerializeInstallDate()
        {
            if ((this.IsInstallDateNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeProcessId()
        {
            if ((this.IsProcessIdNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeServiceSpecificExitCode()
        {
            if ((this.IsServiceSpecificExitCodeNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeStarted()
        {
            if ((this.IsStartedNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeTagId()
        {
            if ((this.IsTagIdNull == false))
            {
                return true;
            }
            return false;
        }

        bool ShouldSerializeWaitHint()
        {
            if ((this.IsWaitHintNull == false))
            {
                return true;
            }
            return false;
        }

        [Browsable(true)]
        public void CommitObject()
        {
            if ((isEmbedded == false))
            {
                PrivateLateBoundObject.Put();
            }
        }

        [Browsable(true)]
        public void CommitObject(PutOptions putOptions)
        {
            if ((isEmbedded == false))
            {
                PrivateLateBoundObject.Put(putOptions);
            }
        }

        void Initialize()
        {
            AutoCommitProp = true;
            isEmbedded = false;
        }

        static string ConstructPath(string keyName)
        {
            string strPath = "root\\MicrosoftIISv2:IIsWebService";
            strPath = string.Concat(strPath, string.Concat(".Name=", string.Concat("\"", string.Concat(keyName, "\""))));
            return strPath;
        }

        void InitializeObject(ManagementScope mgmtScope, ManagementPath path, ObjectGetOptions getOptions)
        {
            Initialize();
            if ((path != null))
            {
                if ((CheckIfProperClass(mgmtScope, path, getOptions) != true))
                {
                    throw new ArgumentException("Class name does not match.");
                }
            }
            PrivateLateBoundObject = new ManagementObject(mgmtScope, path, getOptions);
            PrivateSystemProperties = new ManagementSystemProperties(PrivateLateBoundObject);
            curObj = PrivateLateBoundObject;
        }


        public static IIsWebServiceCollection GetInstances()
        {
            return GetInstances(null, null, null);
        }

        public static IIsWebServiceCollection GetInstances(string condition)
        {
            return GetInstances(null, condition, null);
        }

        public static IIsWebServiceCollection GetInstances(String[] selectedProperties)
        {
            return GetInstances(null, null, selectedProperties);
        }

        public static IIsWebServiceCollection GetInstances(string condition, String[] selectedProperties)
        {
            return GetInstances(null, condition, selectedProperties);
        }

        public static IIsWebServiceCollection GetInstances(ManagementScope mgmtScope, EnumerationOptions enumOptions)
        {
            if ((mgmtScope == null))
            {
                if ((statMgmtScope == null))
                {
                    mgmtScope = new ManagementScope();
                    mgmtScope.Path.NamespacePath = "root\\MicrosoftIISv2";
                }
                else
                {
                    mgmtScope = statMgmtScope;
                }
            }
            ManagementPath pathObj = new ManagementPath();
            pathObj.ClassName = "IIsWebService";
            pathObj.NamespacePath = "root\\MicrosoftIISv2";
            ManagementClass clsObject = new ManagementClass(mgmtScope, pathObj, null);
            if ((enumOptions == null))
            {
                enumOptions = new EnumerationOptions();
                enumOptions.EnsureLocatable = true;
            }
            return new IIsWebServiceCollection(clsObject.GetInstances(enumOptions));
        }

        public static IIsWebServiceCollection GetInstances(ManagementScope mgmtScope, string condition)
        {
            return GetInstances(mgmtScope, condition, null);
        }

        public static IIsWebServiceCollection GetInstances(ManagementScope mgmtScope, String[] selectedProperties)
        {
            return GetInstances(mgmtScope, null, selectedProperties);
        }

        public static IIsWebServiceCollection GetInstances(ManagementScope mgmtScope, string condition, String[] selectedProperties)
        {
            if ((mgmtScope == null))
            {
                if ((statMgmtScope == null))
                {
                    mgmtScope = new ManagementScope();
                    mgmtScope.Path.NamespacePath = "root\\MicrosoftIISv2";
                }
                else
                {
                    mgmtScope = statMgmtScope;
                }
            }
            ManagementObjectSearcher ObjectSearcher = new ManagementObjectSearcher(mgmtScope, new SelectQuery("IIsWebService", condition, selectedProperties));
            EnumerationOptions enumOptions = new EnumerationOptions();
            enumOptions.EnsureLocatable = true;
            ObjectSearcher.Options = enumOptions;
            return new IIsWebServiceCollection(ObjectSearcher.Get());
        }

        [Browsable(true)]
        public static IIsWebService CreateInstance()
        {
            ManagementScope mgmtScope = null;
            if ((statMgmtScope == null))
            {
                mgmtScope = new ManagementScope();
                mgmtScope.Path.NamespacePath = CreatedWmiNamespace;
            }
            else
            {
                mgmtScope = statMgmtScope;
            }
            ManagementPath mgmtPath = new ManagementPath(CreatedClassName);
            ManagementClass tmpMgmtClass = new ManagementClass(mgmtScope, mgmtPath, null);
            return new IIsWebService(tmpMgmtClass.CreateInstance());
        }

        [Browsable(true)]
        public void Delete()
        {
            PrivateLateBoundObject.Delete();
        }

        public void AddDependency(string Application, string GroupID)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("AddDependency");
                inParams["Application"] = ((String)(Application));
                inParams["GroupID"] = ((String)(GroupID));
                PrivateLateBoundObject.InvokeMethod("AddDependency", inParams, null);
            }
        }

        public void AddExtensionFile(bool bCanDelete, bool bEnable, string Description, string ExtensionFile, string GroupID)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("AddExtensionFile");
                inParams["bCanDelete"] = ((Boolean)(bCanDelete));
                inParams["bEnable"] = ((Boolean)(bEnable));
                inParams["Description"] = ((String)(Description));
                inParams["ExtensionFile"] = ((String)(ExtensionFile));
                inParams["GroupID"] = ((String)(GroupID));
                PrivateLateBoundObject.InvokeMethod("AddExtensionFile", inParams, null);
            }
        }

        public uint Change(bool DesktopInteract, string DisplayName, byte ErrorControl, string LoadOrderGroup, string[] LoadOrderGroupDependencies, string PathName, string[] ServiceDependencies, byte ServiceType, string StartMode, string StartName, string StartPassword)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("Change");
                inParams["DesktopInteract"] = ((Boolean)(DesktopInteract));
                inParams["DisplayName"] = ((String)(DisplayName));
                inParams["ErrorControl"] = ((Byte)(ErrorControl));
                inParams["LoadOrderGroup"] = ((String)(LoadOrderGroup));
                inParams["LoadOrderGroupDependencies"] = ((string[])(LoadOrderGroupDependencies));
                inParams["PathName"] = ((String)(PathName));
                inParams["ServiceDependencies"] = ((string[])(ServiceDependencies));
                inParams["ServiceType"] = ((Byte)(ServiceType));
                inParams["StartMode"] = ((String)(StartMode));
                inParams["StartName"] = ((String)(StartName));
                inParams["StartPassword"] = ((String)(StartPassword));
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("Change", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public uint ChangeStartMode(string StartMode)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("ChangeStartMode");
                inParams["StartMode"] = ((String)(StartMode));
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("ChangeStartMode", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public uint Create(bool DesktopInteract, string DisplayName, byte ErrorControl, string LoadOrderGroup, string[] LoadOrderGroupDependencies, string Name, string PathName, string[] ServiceDependencies, byte ServiceType, string StartMode, string StartName, string StartPassword)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("CreateNew");
                inParams["DesktopInteract"] = ((Boolean)(DesktopInteract));
                inParams["DisplayName"] = ((String)(DisplayName));
                inParams["ErrorControl"] = ((Byte)(ErrorControl));
                inParams["LoadOrderGroup"] = ((String)(LoadOrderGroup));
                inParams["LoadOrderGroupDependencies"] = ((string[])(LoadOrderGroupDependencies));
                inParams["Name"] = ((String)(Name));
                inParams["PathName"] = ((String)(PathName));
                inParams["ServiceDependencies"] = ((string[])(ServiceDependencies));
                inParams["ServiceType"] = ((Byte)(ServiceType));
                inParams["StartMode"] = ((String)(StartMode));
                inParams["StartName"] = ((String)(StartName));
                inParams["StartPassword"] = ((String)(StartPassword));
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("CreateNew", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public string CreateNewSite(string PathOfRootVirtualDir, ManagementBaseObject[] ServerBindings, string ServerComment, int ServerId)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("CreateNewSite");
                inParams["PathOfRootVirtualDir"] = ((String)(PathOfRootVirtualDir));
                inParams["ServerBindings"] = ServerBindings;
                inParams["ServerComment"] = ((String)(ServerComment));
                if (ServerId > 0)
                {
                    inParams["ServerId"] = ((Int32)(ServerId));
                }
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("CreateNewSite", inParams, null);
                return Convert.ToString(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToString(0);
            }
        }

        public uint Delete0()
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("Delete", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public void DeleteExtensionFileRecord(string ExtensionFile)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("DeleteExtensionFileRecord");
                inParams["ExtensionFile"] = ((String)(ExtensionFile));
                PrivateLateBoundObject.InvokeMethod("DeleteExtensionFileRecord", inParams, null);
            }
        }

        public void DisableExtensionFile(string ExtensionFile)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("DisableExtensionFile");
                inParams["ExtensionFile"] = ((String)(ExtensionFile));
                PrivateLateBoundObject.InvokeMethod("DisableExtensionFile", inParams, null);
            }
        }

        public void DisableWebServiceExtension(string Extension)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("DisableWebServiceExtension");
                inParams["Extension"] = ((String)(Extension));
                PrivateLateBoundObject.InvokeMethod("DisableWebServiceExtension", inParams, null);
            }
        }

        public void EnableApplication(string Application)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("EnableApplication");
                inParams["Application"] = ((String)(Application));
                PrivateLateBoundObject.InvokeMethod("EnableApplication", inParams, null);
            }
        }

        public void EnableExtensionFile(string ExtensionFile)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("EnableExtensionFile");
                inParams["ExtensionFile"] = ((String)(ExtensionFile));
                PrivateLateBoundObject.InvokeMethod("EnableExtensionFile", inParams, null);
            }
        }

        public void EnableWebServiceExtension(string Extension)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("EnableWebServiceExtension");
                inParams["Extension"] = ((String)(Extension));
                PrivateLateBoundObject.InvokeMethod("EnableWebServiceExtension", inParams, null);
            }
        }

        public int GetCurrentMode()
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("GetCurrentMode", inParams, null);
                return Convert.ToInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToInt32(0);
            }
        }

        public uint InterrogateService()
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("InterrogateService", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public void ListApplications(out string[] Applications)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("ListApplications", inParams, null);
                Applications = ((string[])(outParams.Properties["Applications"].Value));
            }
            else
            {
                Applications = null;
            }
        }

        public void ListExtensionFiles(out string[] ExtensionFiles)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("ListExtensionFiles", inParams, null);
                ExtensionFiles = ((string[])(outParams.Properties["ExtensionFiles"].Value));
            }
            else
            {
                ExtensionFiles = null;
            }
        }

        public void ListWebServiceExtensions(out string[] Extensions)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("ListWebServiceExtensions", inParams, null);
                Extensions = ((string[])(outParams.Properties["Extensions"].Value));
            }
            else
            {
                Extensions = null;
            }
        }

        public uint PauseService()
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("PauseService", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public void QueryGroupIDStatus(string GroupID, out string[] Applications)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("QueryGroupIDStatus");
                inParams["GroupID"] = ((String)(GroupID));
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("QueryGroupIDStatus", inParams, null);
                Applications = ((string[])(outParams.Properties["Applications"].Value));
            }
            else
            {
                Applications = null;
            }
        }

        public void RemoveApplication(string Application)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("RemoveApplication");
                inParams["Application"] = ((String)(Application));
                PrivateLateBoundObject.InvokeMethod("RemoveApplication", inParams, null);
            }
        }

        public void RemoveDependency(string Application, string GroupID)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("RemoveDependency");
                inParams["Application"] = ((String)(Application));
                inParams["GroupID"] = ((String)(GroupID));
                PrivateLateBoundObject.InvokeMethod("RemoveDependency", inParams, null);
            }
        }

        public uint ResumeService()
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("ResumeService", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public uint StartService()
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("StartService", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public uint StopService()
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("StopService", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }

        public uint UserControlService(byte ControlCode)
        {
            if ((isEmbedded == false))
            {
                ManagementBaseObject inParams = null;
                inParams = PrivateLateBoundObject.GetMethodParameters("UserControlService");
                inParams["ControlCode"] = ((Byte)(ControlCode));
                ManagementBaseObject outParams = PrivateLateBoundObject.InvokeMethod("UserControlService", inParams, null);
                return Convert.ToUInt32(outParams.Properties["ReturnValue"].Value);
            }
            else
            {
                return Convert.ToUInt32(0);
            }
        }


        public class IIsWebServiceCollection : object, ICollection
        {

            ManagementObjectCollection privColObj;

            public IIsWebServiceCollection(ManagementObjectCollection objCollection)
            {
                privColObj = objCollection;
            }

            public virtual int Count
            {
                get
                {
                    return privColObj.Count;
                }
            }

            public virtual bool IsSynchronized
            {
                get
                {
                    return privColObj.IsSynchronized;
                }
            }

            public virtual object SyncRoot
            {
                get
                {
                    return this;
                }
            }

            public virtual void CopyTo(Array array, int index)
            {
                privColObj.CopyTo(array, index);
                int nCtr;
                for (nCtr = 0; (nCtr < array.Length); nCtr = (nCtr + 1))
                {
                    array.SetValue(new IIsWebService(((ManagementObject)(array.GetValue(nCtr)))), nCtr);
                }
            }

            public virtual IEnumerator GetEnumerator()
            {
                return new IIsWebServiceEnumerator(privColObj.GetEnumerator());
            }

           class IIsWebServiceEnumerator : object, IEnumerator
            {

                ManagementObjectCollection.ManagementObjectEnumerator privObjEnum;

                public IIsWebServiceEnumerator(ManagementObjectCollection.ManagementObjectEnumerator objEnum)
                {
                    privObjEnum = objEnum;
                }

                public virtual object Current
                {
                    get
                    {
                        return new IIsWebService(((ManagementObject)(privObjEnum.Current)));
                    }
                }

                public virtual bool MoveNext()
                {
                    return privObjEnum.MoveNext();
                }

                public virtual void Reset()
                {
                    privObjEnum.Reset();
                }
            }
        }


       class WMIValueTypeConverter : TypeConverter
        {

            TypeConverter baseConverter;

            Type baseType;

            public WMIValueTypeConverter(Type inBaseType)
            {
                baseConverter = TypeDescriptor.GetConverter(inBaseType);
                baseType = inBaseType;
            }

            public override bool CanConvertFrom(ITypeDescriptorContext context, Type srcType)
            {
                return baseConverter.CanConvertFrom(context, srcType);
            }

            public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
            {
                return baseConverter.CanConvertTo(context, destinationType);
            }

            public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
            {
                return baseConverter.ConvertFrom(context, culture, value);
            }

            public override object CreateInstance(ITypeDescriptorContext context, IDictionary dictionary)
            {
                return baseConverter.CreateInstance(context, dictionary);
            }

            public override bool GetCreateInstanceSupported(ITypeDescriptorContext context)
            {
                return baseConverter.GetCreateInstanceSupported(context);
            }

            public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributeVar)
            {
                return baseConverter.GetProperties(context, value, attributeVar);
            }

            public override bool GetPropertiesSupported(ITypeDescriptorContext context)
            {
                return baseConverter.GetPropertiesSupported(context);
            }

            public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
            {
                return baseConverter.GetStandardValues(context);
            }

            public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
            {
                return baseConverter.GetStandardValuesExclusive(context);
            }

            public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
            {
                return baseConverter.GetStandardValuesSupported(context);
            }

            public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
            {
                if ((baseType.BaseType == typeof(Enum)))
                {
                    if ((value.GetType() == destinationType))
                    {
                        return value;
                    }
                    if ((((value == null)
                                && (context != null))
                                && (context.PropertyDescriptor.ShouldSerializeValue(context.Instance) == false)))
                    {
                        return "NULL_ENUM_VALUE";
                    }
                    return baseConverter.ConvertTo(context, culture, value, destinationType);
                }
                if (((baseType == typeof(bool))
                            && (baseType.BaseType == typeof(ValueType))))
                {
                    if ((((value == null)
                                && (context != null))
                                && (context.PropertyDescriptor.ShouldSerializeValue(context.Instance) == false)))
                    {
                        return "";
                    }
                    return baseConverter.ConvertTo(context, culture, value, destinationType);
                }
                if (((context != null)
                            && (context.PropertyDescriptor.ShouldSerializeValue(context.Instance) == false)))
                {
                    return "";
                }
                return baseConverter.ConvertTo(context, culture, value, destinationType);
            }
        }


        [TypeConverter(typeof(ExpandableObjectConverter))]
       public class ManagementSystemProperties
        {

            ManagementBaseObject PrivateLateBoundObject;

            public ManagementSystemProperties(ManagementBaseObject ManagedObject)
            {
                PrivateLateBoundObject = ManagedObject;
            }

            [Browsable(true)]
            public int GENUS
            {
                get
                {
                    return ((int)(PrivateLateBoundObject["__GENUS"]));
                }
            }

            [Browsable(true)]
            public string CLASS
            {
                get
                {
                    return ((string)(PrivateLateBoundObject["__CLASS"]));
                }
            }

            [Browsable(true)]
            public string SUPERCLASS
            {
                get
                {
                    return ((string)(PrivateLateBoundObject["__SUPERCLASS"]));
                }
            }

            [Browsable(true)]
            public string DYNASTY
            {
                get
                {
                    return ((string)(PrivateLateBoundObject["__DYNASTY"]));
                }
            }

            [Browsable(true)]
            public string RELPATH
            {
                get
                {
                    return ((string)(PrivateLateBoundObject["__RELPATH"]));
                }
            }

            [Browsable(true)]
            public int PROPERTY_COUNT
            {
                get
                {
                    return ((int)(PrivateLateBoundObject["__PROPERTY_COUNT"]));
                }
            }

            [Browsable(true)]
            public string[] DERIVATION
            {
                get
                {
                    return ((string[])(PrivateLateBoundObject["__DERIVATION"]));
                }
            }

            [Browsable(true)]
            public string SERVER
            {
                get
                {
                    return ((string)(PrivateLateBoundObject["__SERVER"]));
                }
            }

            [Browsable(true)]
            public string NAMESPACE
            {
                get
                {
                    return ((string)(PrivateLateBoundObject["__NAMESPACE"]));
                }
            }

            [Browsable(true)]
            public string PATH
            {
                get
                {
                    return ((string)(PrivateLateBoundObject["__PATH"]));
                }
            }
        }
    }
}
